/** 全局的AJAX访问，处理AJAX清求时SESSION超时 */
var _ajax = $.ajax; // 备份jquery的ajax方法
$.ajax = function(opt){
    var _error = opt && opt.error || function(a, b, c){};
    var _opt = $.extend(opt, {
        error: function (xhr,status,error) {
            var responseText = xhr.responseText;
            // console.info(xhr)
            // console.info(getRootPath());
            // console.log("responseText:"+xhr.responseText);
            // console.log("error:"+error);
            if(responseText && responseText.indexOf('this_used_to_show_session') != -1) {
                //先关闭所有
                parent.layer.closeAll();
                layer.closeAll();
                openLoginLayer(getRootPath() + "/admin/toLogin?isAjax=1");
                return;
            }
            _error(xhr,status,error);
        }
    });
    return _ajax(_opt);
};

/** 打开登录弹出框 */
function openLoginLayer(url){
    //表示apply
    //弹出登录框
    var loginLayerIndex001 = layer.open({
        type: 2,
        area: ['400px', '480px'], //宽高
        move: false,
        title: "登录",
        content: url,
        cancel: function(index){
            //关闭所有loading
            layer.closeAll('loading');
            //关闭自己
            layer.close(loginLayerIndex001);
        }
    });
}

/** 获取当前地址 URI */
function getRootPath() {
    //获取当前网址，如： /meun.jsp
    var curWwwPath = window.document.location.href;
    //获取主机地址之后的目录，如： proj/meun.jsp
    var pathName = window.document.location.pathname;
    var pos = curWwwPath.indexOf(pathName);
    //获取主机地址，如： http://localhost:8083
    var localhostPath = curWwwPath.substring(0, pos);
    //获取带"/"的项目名，如：/proj
    var projectName = pathName.substring(0, pathName.substr(1).indexOf(
        '/') + 1);
    return (localhostPath + projectName);
}

/**
 * 弹出错误、成功 结果提示框
 * @author GaoYuan
 * @datetime 2017/12/5 上午8:36
 */
function alertResultMsg(type,dom,content){
    var resultMsg_tools;
    if(type == "error"){
        resultMsg_tools = '<div class="alert alert-danger" style="display:block;position: absolute;top:10px;left:5%;width:90%;">\n' +
            '<button type="button" class="close" data-dismiss="alert">&times;</button>\n' +
            '<i class="fa fa-ban-circle"></i>'+ content +'\n' +
            '</div>';
        $(dom).append(resultMsg_tools);
        setTimeout(function(){ //当时间为2秒的时候，关闭对话框
            $('.alert-danger').slideUp();
        },2000);
    }

}


//打开全屏框 是否显示顶部和底部
function openModel(title,url,hideTop,hideBar){
    if(hideTop){
        $(parent.document).find(".raising-header").hide();
    }
    if(hideBar){
        $(parent.document).find(".raising-navbar").hide();
    }
    var index = layer.open({
        type: 2,
        move: false,
        title: title,
        closeBtn:0,
        content: url,
        cancel: function(index){
            if(hideTop){
                $(parent.document).find(".raising-header").show();
            }
            if(hideBar){
                $(parent.document).find(".raising-navbar").show();
            }
            layer.close(index);
        }
    });
    layer.full(index);
}
//关闭弹出框
function closeModel(isRefresh,showTop,showBar){
    if(showTop){
        $(parent.parent.document).find(".raising-header").show();
    }
    if(showBar){
        $(parent.parent.document).find(".raising-navbar").show();
    }
    var index = parent.layer.getFrameIndex(window.name);
    if(isRefresh){
        //刷新列表页
        $(parent.document).find("#searchForm").submit();
    }
    parent.layer.close(index);
}

/**
 * 关闭弹出框
 * @author gaoyuan
 * @param isRefresh
 * @param showTop
 * @param showBar
 */
function closeModelFunc(myFunc){
    var index = parent.layer.getFrameIndex(window.name);
    if(myFunc && myFunc!=""){
        if(isString(myFunc)) {
            eval(myFunc);
        }else{
            myFunc();
        }
    }
    parent.layer.close(index);
}

//弹出消息提示
function showMsg(msg){
    // layer.msg(msg,{time:3000});
    layer.alert("<span style='color:#333;'>"+msg+"</span>");
}
//弹出消息提示
function showMsg(msg,myFunc){
    layer.alert("<span style='color:#333;'>"+msg+"</span>", function(){
        if(myFunc && myFunc!=""){
            layer.closeAll();
            if(isString(myFunc)) {
                eval(myFunc);
            }else{
                myFunc();
            }
        }else{
            layer.closeAll();
        }
    });

    //
    // layer.msg(msg,{offset: '55px',anim: 6,time:1000},function(){
    //     if(myFunc && myFunc!=""){
    //         if(isString(myFunc)) {
    //             eval(myFunc);
    //         }else{
    //             myFunc();
    //         }
    //     }
    // });
}

/**
 * 判断对象是否是字符串
 * @author GaoYuan
 * @param obj
 * @returns {boolean}
 */
function isString(obj){
    return Object.prototype.toString.call(obj) === "[object String]";
}
/**
 * 判断是否是空，空则返回第二个参数
 * @author GaoYuan
 * @datetime 2018/1/24 下午4:26
 */
function isBlank(str,result){
    if(str == null || str == ""){
        return result;
    }else{
        return str;
    }
}

/**
 * 格式化数字
 * 1、最多保留 1 位小数
 * 2、将 0.0 格式化为 0
 * @param value
 */
function parseNum(value){
    if(!value){
        return "";
    }
    if(value == null || value == ""){
        return value;
    }
    if(value=="--"){
        return value;
    }
    value = parseFloat(value);
    value = value.toFixed(1);
    value = parseFloat(value);
    return value;
}

/****js校验******/
function isBlankCheck(strs,names){
    var strAttr = strs.split(",");
    var namesAttr = names.split(",");
    for(var i=0;i<strAttr.length;i++){
        if(strAttr[i]==""){
            // 不处理
        }else if(!$("#"+strAttr[i]) || $("#"+strAttr[i]).val()=="" || $("#"+strAttr[i]).val()== null){
            // layer.msg(namesAttr[i]+"不能为空",{offset: '55px',anim: 6});
            if($("#"+strAttr[i]).css("display")=="none" || $("#"+strAttr[i]).attr("type")=="hidden"){
                layer.tips(namesAttr[i]+"不能为空", $("#"+strAttr[i]).next() ,{tips: [1, '#3595CC'], time: 3000});

                var mainContainer = $("body");
                var scrollToContainer = $("#"+strAttr[i]).next();
                var mainContainerOffsetTop = 0;
                if(mainContainerOffsetTop && mainContainer.offset()){
                    mainContainerOffsetTop = mainContainer.offset().top;
                }
                var mainContainerScrollTop = 0;
                if(mainContainerScrollTop){
                    mainContainerScrollTop = mainContainer.scrollTop();
                }
                mainContainer.animate({
                    scrollTop: scrollToContainer.offset().top - mainContainerOffsetTop + mainContainerScrollTop
                }, 100);

            }else{
                layer.tips(namesAttr[i]+"不能为空", "#"+ strAttr[i] ,{tips: [1, '#3595CC'], time: 3000});
                $("#"+strAttr[i]).focus();
            }
            return false;
        }
    }
    return true;
}



/********** 日期格式化 ************/

/**
 * 用法：
 *
 $(function() {
        var s = new Date(1388776825);
        alert(s);
        alert(getFormatDate(s));
    })
 * */
/**
 * 扩展date函数
 * author:c3gen
 */
Date.prototype.format = function(format) {
    var o = {
        "M+": this.getMonth() + 1,
        "d+": this.getDate(),
        "h+": this.getHours(),
        "m+": this.getMinutes(),
        "s+": this.getSeconds(),
        "q+": Math.floor((this.getMonth() + 3) / 3),
        "S": this.getMilliseconds()
    }
    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
}
/**
 date 为long类型
 pattern 为格式化参数
 */
function getFormatDate(date, pattern) {
    if (date == undefined) {
        date = new Date();
    }
    if (pattern == undefined) {
        pattern = "yyyy-MM-dd hh:mm:ss";
    }
    return date.format(pattern);
}


/*******************js 方法覆写********************/

String.prototype.endWith=function(s){
    if(s==null||s==""||this.length==0||s.length>this.length)
        return false;
    if(this.substring(this.length-s.length)==s)
        return true;
    else
        return false;
    return true;
}
String.prototype.startWith=function(s){
    if(s==null||s==""||this.length==0||s.length>this.length)
        return false;
    if(this.substr(0,s.length)==s)
        return true;
    else
        return false;
    return true;
}
String.prototype.startsWith=function(s){
    if(s==null||s==""||this.length==0||s.length>this.length)
        return false;
    if(this.substr(0,s.length)==s)
        return true;
    else
        return false;
    return true;
}

/**
 * 导出指定table至excel 有兼容性问题
 * @author gaoyuan
 * @param id
 * 需要引入：
 <script type="text/javascript" src="${ctxStatic}/js/table2excel/jquery.table2excel.js"></script>
 */
function table2excel(id){
    if(id && id!="" && $("#"+id).length>0 ){
        if($("#"+id).html()==""){
            showMsg("没有需要导出的数据");
        }else{
            layer.confirm('确认导出数据至excel文件吗？<br/><span class="text-danger">(注：推荐使用chrome浏览器)</span>', {
                btn: ['确认导出','取消'] //按钮
            }, function(){
                layer.closeAll();
                $("#"+id).table2excel({
                    exclude: ".excludeThisClass",
                    name: "表格数据",
                    filename: "表格数据.xls" //do not include extension
                });
            }, function(){

            });
        }
    }else{
        //寻找页面table数据
        var optionss = $("table");
        if(optionss.length>0){
            layer.confirm('确认导出数据至excel文件吗？<br/><span class="text-danger">(注：推荐使用chrome浏览器)</span>', {
                btn: ['确认导出','取消'] //按钮
            }, function(){
                layer.closeAll();
                $(optionss[0]).table2excel({
                    exclude: ".excludeThisClass",
                    name: "表格数据",
                    filename: "表格数据.xls" //do not include extension
                });
            }, function(){

            });
        }else{
            // showMsg("此页面不支持导出excel");
            showMsg("没有需要导出的数据");
        }

    }

}